<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/plantillas/plantillaPrincipal.xhtml">
        <ui:define name="contenido">
            <f:view>
                <h:form id="formulario">

                    <p:panel header="Registrar Factura" style="width:85%;margin: 10px auto;">

                        <p:panelGrid style="width:90%;margin: 10px auto;" id="panelBoleta">
                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblTipoOrden" value="CODIGO OP: " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <p:selectOneMenu id="cbxPedido" value="#{BKBoletaCompra.boletaFormulario.idOrdenPedido.id}" 
                                                     style="width: 160px" filter="#{BKBoletaCompra.listaOrdenesPedidoFormulario.size() gt 10}" 
                                                     filterMatchMode="contains"> 
                                        <f:selectItem itemLabel="Seleccionar" itemValue="0" /> 
                                        <f:selectItems value="#{BKBoletaCompra.listaOrdenesPedidoFormulario}" var="ordenP" 
                                                       itemLabel="#{ordenP.codigoOrdenPedido}" itemValue="#{ordenP.id}" />
                                        <p:ajax update="cbxCS,dataTableDetalleBoleta,btnGuardar" listener="#{MBBoletaCompra.listarOrdenCS}"/>
                                    </p:selectOneMenu>

                                    <p:message for="cbxPedido" display="text" />
                                </p:column>
                                <p:column colspan="1" style="width:200px">
                                    <h:outputLabel id="lblNroOrdenCS" value="CODIGO DE OC(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <p:selectOneMenu id="cbxCS" value="#{BKBoletaCompra.boletaFormulario.idOrdenCompraServicio.id}" 
                                                     style="width: 140px" filter="#{BKBoletaCompra.listaOrdenesCSFormulario.size() gt 10}" 
                                                     filterMatchMode="contains" panelStyle="width: 300px;font-size:11px">  
                                        <f:selectItem itemLabel="Seleccionar" itemValue="0" /> 
                                        <f:selectItems value="#{BKBoletaCompra.listaOrdenesCSFormulario}" var="ordenCS" 
                                                       itemLabel="#{ordenCS.codigo} (#{ordenCS.tipo eq 67?ordenCS.idCategoriaArticulo.nombre:ordenCS.servicio})" itemValue="#{ordenCS.id}" />
                                        <p:ajax listener="#{MBBoletaCompra.elegirOCS}"
                                                update="txtProveedor,cbxMoneda,dataTableDetalleBoleta,btnDetalle,cbxTipoPago" />
                                    </p:selectOneMenu>
                                    <p:message for="cbxCS" display="text" />
                                </p:column>
                            </p:row>

                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblSerie" value="SERIE(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <p:inputText id="txtSerie" required="true"
                                                 value="#{BKBoletaCompra.boletaFormulario.serie}" maxlength="3" >
                                        <f:validateRegex pattern="[0-9]*" />
                                    </p:inputText>  
                                    <p:message for="txtSerie" display="text" />
                                </p:column>

                                <p:column>
                                    <h:outputLabel id="lblNumFactura" value="NRO BOLETA(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <p:inputText id="txtNumFactura" required="true" 
                                                 value="#{BKBoletaCompra.boletaFormulario.numeroFactura}" maxlength="8" >
                                        <f:validateRegex pattern="[0-9]*" />
                                    </p:inputText>  
                                    <p:message for="txtNumFactura" display="text" />
                                </p:column>
                            </p:row>


                            <p:row>
                                <p:column>
                                    <h:outputLabel id="lblProveedor" value="PROVEEDOR(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column>
                                    <h:outputText id="txtProveedor" value="#{BKBoletaCompra.boletaFormulario.idProveedor.nombreComercial}" />
                                </p:column>
                                <p:column>
                                    <h:outputLabel id="lblMoneda" value="MONEDA(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column>
                                    <p:selectOneMenu id="cbxMoneda" required="true" converter="#{tipoMonedaConverter}"
                                                     value="#{BKBoletaCompra.boletaFormulario.idTipoMoneda}" 
                                                     disabled="#{BKBoletaCompra.boletaFormulario.idOrdenCompraServicio.id eq 0 || BKBoletaCompra.boletaFormulario.detalleFacturaCollection.size() gt 0}" > 
                                        <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
                                        <f:selectItems value="#{BKBoletaCompra.listaTipoMoneda}" var="mon" 
                                                       itemLabel="#{mon.nombre}" itemValue="#{mon}"/>
                                        <p:ajax update="btnDetalle" process="@this" />
                                    </p:selectOneMenu>
                                    <p:message for="cbxMoneda" display="text"/>
                                </p:column>

                            </p:row>

                            <p:row>

                                <p:column>
                                    <h:outputLabel id="lblFechaEmision" value="FECHA EMISION(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column>
                                    <p:calendar id="calendarFechaEmision" value="#{BKBoletaCompra.boletaFormulario.fecEmision}" 
                                                pattern="dd/MM/yyyy" showOn="button" showButtonPanel="true" navigator="true" 
                                                required="true" size="12" locale="es">
                                        <p:ajax event="dateSelect" listener="#{MBBoletaCompra.marcarFecha}" update="txtCambio,calendarFechaEmision,btnDetalle" />
                                    </p:calendar>
                                    <p:message for="calendarFechaEmision"/>
                                </p:column>
                                <p:column>
                                    <h:outputLabel id="lblCambio" value="TIPO CAMBIO(*): " styleClass="lblForm" />
                                </p:column>
                                <p:column >
                                    <h:outputText id="txtCambio" value="#{BKBoletaCompra.boletaFormulario.tipoCambio}" />
                                </p:column>

                            </p:row>

                            <p:row>
                                <p:column colspan="4">
                                    <p:fieldset toggleable="true" legend="Condiciones de Pago" style="width:98%;margin: 10px auto;" id="fdsNegociacion">
                                        <p:panelGrid style="width:100%;margin: 10px auto;">
                                            <p:row>
                                                <p:column>
                                                    <h:outputLabel id="lblFormaPago" value="FORMA DE PAGO(*): " styleClass="lblForm" />
                                                </p:column>
                                                <p:column>
                                                    <h:outputText id="txtFormaPago" value="#{BKBoletaCompra.boletaFormulario.formaPago.nombre}" />
                                                </p:column>
                                                <p:column>
                                                    <h:outputLabel id="lblTipoPago" value="TIPO DE PAGO(*): " styleClass="lblForm" />
                                                </p:column>
                                                <p:column>
                                                    <p:selectOneMenu id="cbxTipoPago" required="true" 
                                                                     value="#{BKBoletaCompra.boletaFormulario.tipoPago}"> 
                                                        <f:selectItem itemLabel="Seleccionar" itemValue="" /> 
                                                        <f:selectItems value="#{BKBoletaCompra.listaTipoPago}" var="tipo" 
                                                                       itemLabel="#{tipo}" itemValue="#{tipo}"/>
                                                    </p:selectOneMenu>
                                                    <p:message for="cbxTipoPago" display="text"/>	
                                                </p:column>

                                            </p:row>
                                        </p:panelGrid>
                                    </p:fieldset>
                                </p:column>
                            </p:row>

                            <p:row>
                                <p:column colspan="4" >
                                    <p:commandButton id="btnDetalle" value="REGISTRAR DETALLE" update=":formularioDetalle:panelDetalle" 
                                                     disabled="#{BKBoletaCompra.boletaFormulario.idOrdenCompraServicio.id eq 0  and BKBoletaCompra.boletaFormulario.idTipoMoneda.id eq null}" 
                                                     process="@this" actionListener="#{MBDetalleBC.inciarDetalleBoleta}" ajax="true" oncomplete="agregarDetalle.show()">
                                        <f:attribute name="listaArt" value="#{BKBoletaCompra.listaArticuloDetalle}" />  
                                        <f:attribute name="listaDet" value="#{BKBoletaCompra.boletaFormulario.detalleFacturaCollection}" /> 
                                    </p:commandButton> 
                                </p:column>
                            </p:row>

                            <p:row>
                                <p:column colspan="4">
                                    <p:fieldset legend="DETALLE DE BOLETA" toggleable="true" id="detalleBoleta">
                                        <p:panelGrid  style="width:90%">
                                            <p:row>
                                                <p:column colspan="4">
                                                    <p:dataTable id="dataTableDetalleBoleta" var="detalle" widgetVar="carsTable"
                                                                 value="#{BKBoletaCompra.boletaFormulario.detalleFacturaCollection}" style="width: 100%"
                                                                 emptyMessage="No se encontro detalle de la boleta" filteredValue="" rowIndexVar="rowIndex"> 

                                                        <p:column id="idColumnaNum" headerText="Num." style="width: 5%"
                                                                  rendered="#{MBBoletaCompra.isRenderedColumn(detgr.estadoRegistro)}" > 
                                                            <h:outputText value="#{rowIndex+1}" /> 
                                                        </p:column>

                                                        <p:column id="idDescripcion" rendered="#{MBBoletaCompra.isRenderedColumn(detalle.estadoRegistro)}"
                                                                  headerText="Descripcion"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.idArticulo.nombreComercial}" /> 
                                                        </p:column>

                                                        <p:column id="idUnidadMedida" 
                                                                  headerText="UM" rendered="#{MBBoletaCompra.isRenderedColumn(detalle.estadoRegistro)}"
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.unidadMedida.abrev}" /> 
                                                        </p:column>

                                                        <p:column id="idCantidad" rendered="#{MBBoletaCompra.isRenderedColumn(detalle.estadoRegistro)}"
                                                                  headerText="Cant."  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.cantidad}" style="float: right" > 
                                                                <f:convertNumber minFractionDigits="2" maxFractionDigits="2" groupingUsed="false" />
                                                            </h:outputText >   
                                                        </p:column>

                                                        <p:column id="idPrecio" rendered="#{MBBoletaCompra.isRenderedColumn(detalle.estadoRegistro)}"
                                                                  headerText="Precio"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.precioUnitario}" style="float: right" > 
                                                                <f:convertNumber minFractionDigits="2" maxFractionDigits="2" groupingUsed="false" />
                                                            </h:outputText >   
                                                        </p:column>

                                                        <p:column id="idSubTotal" rendered="#{MBBoletaCompra.isRenderedColumn(detalle.estadoRegistro)}"
                                                                  headerText="Sub Total"  
                                                                  filterMatchMode="contains"> 
                                                            <h:outputText value="#{detalle.precioTotal}" style="float: right" >
                                                                <f:convertNumber minFractionDigits="2" maxFractionDigits="2" groupingUsed="false" />
                                                            </h:outputText>
                                                        </p:column>

                                                        <p:column id="idAccionesArticulo" headerText="Acciones"
                                                                  style="width: 20%" rendered="#{MBBoletaCompra.isRenderedColumn(detalle.estadoRegistro)}">
                                                            <p:commandButton id="selectButton"
                                                                             oncomplete="confirmacion.show()" ajax="true" icon="ui-icon-trash"
                                                                             process="@this">
                                                                <f:setPropertyActionListener value="#{detalle}"
                                                                                             target="#{BKBoletaCompra.detalleBoletaSeleccionada}" />
                                                            </p:commandButton>
                                                        </p:column>

                                                    </p:dataTable>
                                                </p:column>
                                            </p:row>

                                            <p:row>
                                                <p:column >
                                                    <h:outputLabel id="lblTotalGral" value="TOTAL GENERAL" class="negrita" />
                                                </p:column>
                                                <p:column colspan="3">
                                                    <h:outputText id="txtTotalGral" value="#{BKBoletaCompra.boletaFormulario.total}" >
                                                        <f:convertNumber minFractionDigits="2" maxFractionDigits="2" groupingUsed="false" />
                                                    </h:outputText>
                                                </p:column>
                                            </p:row>

                                        </p:panelGrid>


                                    </p:fieldset>
                                </p:column>
                            </p:row>

                        </p:panelGrid>


                        <p:panelGrid style="width:40%;margin: 10px auto;">

                            <p:row>
                                <p:column>
                                    <p:commandButton  action="#{BKBoletaCompra.comando.aceptar()}" ajax="false" 
                                                      value="#{BKBoletaCompra.comando.nombre}" id="btnGuardar"
                                                      disabled="#{BKBoletaCompra.boletaFormulario.detalleFacturaCollection.size() eq 0}"/>
                                </p:column>
                                <p:column>
                                    <p:commandButton action="#{MBBoletaCompra.cancelar()}" ajax="false" immediate="true" value="Cancelar"/>
                                </p:column>
                            </p:row>	

                        </p:panelGrid>

                        <h:panelGrid styleClass="mensaje_obligatorio">(*) Campos Requeridos</h:panelGrid>

                    </p:panel>

                    <p:confirmDialog id="dlgEliminarArticulo"
                                     message="#{message['dialog.confirmacion.mensaje']}"
                                     header="#{message['dialog.confirmacion.header']}" severity="alert"
                                     widgetVar="confirmacion">
                        <h:panelGrid style="width: auto;margin:0px auto;border:0px;padding: 0 5px" columns="2">
                            <p:commandButton id="btnConfEliArticuloGR"
                                             actionListener="#{MBBoletaCompra.eliminarDetalle}"
                                             update="detalleBoleta btnGuardar cbxMoneda" value="Si"
                                             oncomplete="confirmacion.hide()" immediate="true"
                                             style="text-align: center" process="@this" />
                            <p:commandButton id="btnCancEliArticuloGR" value="No"
                                             onclick="confirmacion.hide()" type="button"
                                             style="text-align: center" />
                        </h:panelGrid>
                    </p:confirmDialog>

                </h:form>
                <p:dialog widgetVar="agregarDetalle" id="panAgregarDetalle" header="Detalle Boleta" modal="true"
                          dynamic="true" transient="true">
                    <ui:include src="detalleBoletaCompra.xhtml" /> 
                </p:dialog>

            </f:view>
        </ui:define>

    </ui:composition>
</html>